package co.fitstart.mobile.service;

import co.fitstart.entity.order.Order;
import co.fitstart.entity.order.OrderInvestigateRecord;
import co.fitstart.entity.user.User;
import co.fitstart.entity.user.fit.Shape;
import co.fitstart.entity.user.investigation.FitInvestigation;
import co.fitstart.entity.user.investigation.HealthInvestigation;
import co.fitstart.entity.user.investigation.ParticipateInvestigation;
import co.fitstart.entity.user.investigation.ProfileInvestigation;

/**
 * 
 * @author mohanlan
 */
public interface InvestigationService {

    /**
     * edit user profile investigation
     * 
     * @param user
     * @param profileInvestigation
     */
    public void editProfile(User user, ProfileInvestigation profileInvestigation);
    
    /**
     * 
     * @param user
     * @param orderInvestigateRecord
     * @param profileInvestigation
     */
    public void editProfile(User user, OrderInvestigateRecord orderInvestigateRecord, ProfileInvestigation profileInvestigation);
    
    /**
     * Load shape by id
     * 
     * @param shapeId
     * @return
     */
    public Shape loadShape(Long shapeId);
    
    /**
     * Edit user fitInvestigation
     * 
     * @param user
     * @param fitInvestigation
     * @param shape
     */
    public void editFit(User user, FitInvestigation fitInvestigation, Shape shape);

    /**
     * 
     * @param user
     * @param orderInvestigateRecord
     * @param fitInvestigation
     * @param shape
     */
    public void editFit(User user, OrderInvestigateRecord orderInvestigateRecord, FitInvestigation fitInvestigation, Shape shape);
    
    /**
     * @param user
     * @param orderInvestigateRecord
     * @param fitInvestigation
     * @param shape
     * @param order
     */
    public void editOfflineFit(User user, OrderInvestigateRecord orderInvestigateRecord, FitInvestigation fitInvestigation, Shape shape, Order order);

    /**
     * 
     * @param user
     * @return
     */
    public HealthInvestigation loadLastHealth(User user);
    
    /**
     * 
     * @param user
     * @param healthInvestigation
     */
    public void editHealth(User user, HealthInvestigation healthInvestigation);

    /**
     * 
     * @param user
     * @param orderInvestigateRecord
     * @param healthInvestigation
     */
    public void editHealth(User user, OrderInvestigateRecord orderInvestigateRecord, HealthInvestigation healthInvestigation);

    /**
     * 
     * @param user
     * @return
     */
    public ParticipateInvestigation loadLastParticipate(User user);
    
    /**
     * 
     * @param user
     * @param participateInvestigation
     */
    public void editParticipate(User user, ParticipateInvestigation participateInvestigation);
    
    /**
     * 
     * @param user
     * @param orderInvestigateRecord
     * @param participateInvestigation
     */
    public void editParticipate(User user, OrderInvestigateRecord orderInvestigateRecord, ParticipateInvestigation participateInvestigation);
}
